﻿using DexComanda.Models;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace DexComanda
{
    public partial class frmItemsExtras : Form
    {
        private Conexao con;
        private List<ItemExtra> itemsExtras;
        private frmCadastrarPedido parentWindow;
        private int codPedido;

        public frmItemsExtras(int codpedido,frmCadastrarPedido parent)
        {
            con = new Conexao();
            codPedido = codpedido;
            parentWindow = parent;
            InitializeComponent();
        }

        private void btnAdicionarItemExtra_Click(object sender, EventArgs e)
        {
            var itemExtra = new ItemExtra() { 
                CodPedido = codPedido,
                Descricao = this.txtItemExtraDescricao.Text,
                Valor = decimal.Parse(this.txtItemExtraValor.Text)
            };

            con.Insert("spAdicionarItemExtra", itemExtra);
            DataSet ItemExtra = con.SelectItemsExtrasPorPedido("ItemsExtras", "spObterItemsExtrasPorPedido", codPedido);
            DataRowCollection dRows = ItemExtra.Tables["ItemsExtras"].Rows;
            
            itemsExtras.Clear();
            decimal valor = 0;
            foreach (DataRow dr in dRows)
            {
                var item = new ItemExtra()
                {
                    Codigo = int.Parse(dr[0].ToString()),
                    Descricao = dr[1].ToString(),
                    Valor = decimal.Parse(dr[2].ToString())
                };
                valor = valor + item.Valor;

                parentWindow.ValorTotal = parentWindow.ValorTotal + valor;
                parentWindow.changeValorTotal(parentWindow.ValorTotal);
                itemsExtras.Add(item);
            }

            PopularGrid();
        }

        private void btnExcluirItemExtra_Click(object sender, EventArgs e)
        {

        }

        private void frmItemsExtras_Load(object sender, EventArgs e)
        {
            itemsExtras = new List<ItemExtra>();
            DataSet ItemExtra = con.SelectItemsExtrasPorPedido("ItemsExtras", "spObterItemsExtrasPorPedido", codPedido);
            DataRowCollection dRows = ItemExtra.Tables["ItemsExtras"].Rows;

            foreach (DataRow dr in dRows)
            {
                var itemExtra = new ItemExtra() { 
                    Codigo = int.Parse(dr[0].ToString()),
                    Descricao = dr[1].ToString(),
                    Valor = decimal.Parse(dr[2].ToString())
                };

                itemsExtras.Add(itemExtra);
            }

            PopularGrid();
        }


        private void PopularGrid() {
            
            var itemsExtrasDS = con.SelectItemsExtrasPorPedido("ItemsExtras", "spObterItemsExtrasPorPedido", codPedido);

            if ((itemsExtrasDS.Tables["ItemsExtras"].Rows.Count == 0))
            {

            }
            else
            {
                DataTable dt = new DataTable();
                dt.Columns.Add(new DataColumn("Codigo", typeof(string)));
                dt.Columns.Add(new DataColumn("Descrição", typeof(string)));
                dt.Columns.Add(new DataColumn("Valor", typeof(string)));

                DataRow row;

                for (int i = 0; i < itemsExtras.Count; i++)
                {
                    row = dt.NewRow();

                    row["Codigo"] = itemsExtras[i].Codigo;
                    row["Descrição"] = itemsExtras[i].Descricao;
                    row["Valor"] = itemsExtras[i].Valor;

                    dt.Rows.Add(row);
                }

                this.itemsExtrasGridView.AutoGenerateColumns = true;
                this.itemsExtrasGridView.DataSource = dt;
            }
        }
    }
}
